int *p=new int [3]和int p[3]是一回事吗?

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:23:00
如题。还有我想问,new 是不是只用于自定义类型的分配空间啊(除了数组),像Int *p=new int这样等于没写对不对?

new int完全可以
int * p = new int[3]和int p[3]
功能是一样的
但有一些区别
1: int *p = new int[3]是在堆上分配空间的,一定要自己释放
而int p[3]是在栈上分配的,退出作用域后自动释放
2: int * p = new int[3] 中的p是一个指向int的指针,它还可以指向其它地方
但int p[3]中的p是常量指针,不能再给它赋值了

1:不完全一样,NEW更好点

2:不是。都能用。Int *p=new int有作用,占用空间

二楼正解